package com.ebupt.migu.music.effectStatistics.service.Impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ebupt.migu.music.common.entity.Page;
import com.ebupt.migu.music.common.entity.ResultObject;
import com.ebupt.migu.music.effectStatistics.entity.vo.PUSHDailyReportExportVo;
import com.ebupt.migu.music.effectStatistics.entity.vo.PushExportVo;
import com.ebupt.migu.music.effectStatistics.mapper.MessagePushMapper;
import com.ebupt.migu.music.effectStatistics.service.MessagePushService;

import lombok.extern.slf4j.Slf4j;

/**
 * @Author zhuar
 */
@Slf4j
@Service
public class MessagePushServiceImpl implements MessagePushService {
    @Autowired
    private MessagePushMapper messagePushMapper;

    /**
     * 分页查询
     *
     * @param params
     * @return
     */
    @Override
    public ResultObject queryMap(Map<String, Object> params) {
        ResultObject<Page<HashMap<String, Object>>> res = new ResultObject<>();
        // 是否系统管理员 1-系统管理员； 0-普通用户；
        String is_admin = params.get("isAdmin").toString();
        if ("1".equals(is_admin) || "1".equals(params.get("isSuperAdmin"))) {// 是否超级管理员
            params.remove("creatorDepartment");
        }
        String summary = params.get("summary").toString();
        // 总数
        int total = "1".equals(summary) ? messagePushMapper.countSummary(params) : messagePushMapper.countQuery(params);
        // 分页查询结果集
        List<HashMap<String, Object>> datas =
            "1".equals(summary) ? messagePushMapper.querySummary(params) : messagePushMapper.queryMap(params);
        // 分页
        Page<HashMap<String, Object>> page = new Page<>();
        page.setTotal(total);
        page.setData(datas);
        res.setData(page);
        return res;
    }

    /**
     * 导出
     *
     * @param params
     * @return
     */
    @Override
    public List<PushExportVo> exportMap(Map<String, Object> params) {
        // 是否超级管理员 1-超级管理员； 0-普通用户；
        String is_admin = params.get("isAdmin").toString();
        if ("1".equals(is_admin)) {
            params.remove("creatorDepartment");
        }
        String summary = params.get("summary").toString();
        List<PushExportVo> datas =
            "1".equals(summary) ? messagePushMapper.exportSummary(params) : messagePushMapper.exportMap(params);
        return datas;
    }

    /**
     * PUSH日报分页条件查询
     *
     * @param params
     * @return
     */
    @Override
    public ResultObject report(Map<String, Object> params) {
        ResultObject<Page<HashMap<String, Object>>> res = new ResultObject<>();
        // 总数
        int total = messagePushMapper.countReportQuery(params);
        // 分页查询结果集
        List<HashMap<String, Object>> datas = messagePushMapper.queryReportMap(params);
        // 分页
        Page<HashMap<String, Object>> page = new Page<>();
        page.setTotal(total);
        page.setData(datas);
        res.setData(page);
        return res;
    }

    /**
     * 日报导出
     *
     * @param params
     * @return
     */
    @Override
    public List<PUSHDailyReportExportVo> dailyExportMap(Map<String, Object> params) {
        List<PUSHDailyReportExportVo> datas = messagePushMapper.dailyExportMap(params);
        return datas;
    }

    /**
     * 判断是否有参数
     * 
     * @param params
     * @return
     */
    private Boolean IsHaveCondition(Map<String, Object> params) {
        if (params.containsKey("startTime") && !"".equals(params.get("startTime"))) {
            return true;
        }
        if (params.containsKey("endTime") && !"".equals(params.get("endTime"))) {
            return true;
        }
        if (params.containsKey("strategyName") && !"".equals(params.get("strategyName"))) {
            return true;
        }
        if (params.containsKey("groupName") && !"".equals(params.get("groupName"))) {
            return true;
        }
        if (params.containsKey("exeStart") && !"".equals(params.get("exeStart"))) {
            return true;
        }
        if (params.containsKey("exeEnd") && !"".equals(params.get("exeEnd"))) {
            return true;
        }
        if (params.containsKey("creatorDepartment") && !"".equals(params.get("creatorDepartment"))) {
            return true;
        }
        if (params.containsKey("executeType") && !"".equals(params.get("executeType"))) {
            return true;
        }
        return false;
    }
}
